Column

Chart A

Column

Chart B

Chart C

---
title: "Dashboard about Instacart"
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
    source: embed
---

```{r setup, include=FALSE}
library(flexdashboard)
library(tidyverse)
library(dplyr)
library(plotly)
library(p8105.datasets)
```

```{r}
data("instacart")

instacart_clean <- instacart |>
   mutate(
    order_dow = case_when(
      order_dow == 0 ~ "Monday",
      order_dow == 1 ~ "Tuesday",
      order_dow == 2 ~ "Wednesday",
      order_dow == 3 ~ "Thursday",
      order_dow == 4 ~ "Friday",
      order_dow == 5 ~ "Saturday",
      order_dow == 6 ~ "Sunday"
    )
   ) |>
  filter(department ==	"beverages") |>
  select(order_id, product_id, user_id, order_dow, order_hour_of_day,product_name, aisle, department,days_since_prior_order)
```

## Column {data-width="500"}

### Chart A

```{r}
# number of sold items in different aisles
instacart_clean |>
  count(aisle) |>
  mutate(aisle = fct_reorder(aisle, n)) |> 
  plot_ly(x = ~aisle, y = ~n, color = ~aisle, type = "bar", colors = "viridis")
```

## Column {data-width="500"}

### Chart B

```{r}
# days since the last order in different aisles
instacart_clean |> 
  drop_na(days_since_prior_order) |>
  mutate(aisle = fct_reorder(aisle, days_since_prior_order)) |> 
  plot_ly(y = ~days_since_prior_order, color = ~aisle, type = "box", colors = "viridis")
```

### Chart C

```{r}
# average order hour on different days of the week on which the order was placed

days_order <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")

instacart_clean %>%
  group_by(order_dow, aisle) %>%
  summarise(avg_order_hour = mean(order_hour_of_day)) %>%
  mutate(text_label = str_c("Aisle: ", aisle)) %>%
  mutate(order_dow = factor(order_dow, levels = days_order)) %>%
  plot_ly(x = ~order_dow, y = ~avg_order_hour, type = "scatter", mode = "markers", color = ~aisle, colors = "viridis", text = ~text_label)
```